package org.Yiran.timetale_re.item.tool.screwdriver.modules.type;

import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.IModule;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleCategory;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleType;

/**
 * 红石模块接口
 * <p>
 * 定义红石模块的通用功能
 * </p>
 */
public interface RedstoneModule extends IModule {
    
    /**
     * 激活红石信号
     * <p>
     * 在指定位置激活红石信号
     * </p>
     *
     * @param level 当前世界
     * @param pos   方块位置
     * @param state 方块状态
     * @return 是否成功激活
     */
    default boolean activateRedstoneSignal(Level level, BlockPos pos, BlockState state) {
        // 更新周围方块的红石信号
        level.updateNeighborsAt(pos, state.getBlock());
        return true;
    }
    
    /**
     * 获取红石信号强度
     * <p>
     * 获取该模块能提供的红石信号强度 (0-15)
     * </p>
     *
     * @return 红石信号强度
     */
    default int getRedstoneSignalStrength() {
        return 15; // 默认提供最大强度的红石信号
    }
    
    /**
     * 获取模块类型
     *
     * @return 模块类型
     */
    @Override
    default ModuleType getModuleType() {
        return ModuleType.REDSTONE;
    }
    
    /**
     * 获取模块分类
     *
     * @return 模块分类
     */
    @Override
    default ModuleCategory getModuleCategory() {
        return ModuleCategory.FUNCTION;
    }
}